package com.yuwei.live.view

import android.content.Context
import android.graphics.*
import android.text.TextPaint
import android.util.AttributeSet
import com.youth.banner.indicator.BaseIndicator

/**
 * 带圆角黑色背景的数字指示器（显示如 "1/5"）
 */
class NumberIndicator @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : BaseIndicator(context, attrs, defStyleAttr) {

    private val textPaint = TextPaint(Paint.ANTI_ALIAS_FLAG).apply {
        color = Color.WHITE
        textSize = 20f // 默认文字大小（px）
        textAlign = Paint.Align.CENTER
    }

    private val bgPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
        color = Color.parseColor("#80000000") // 半透明黑色背景
        style = Paint.Style.FILL
    }

    private var cornerRadius = 10f // 圆角半径（px）
    private var bgPadding = 16f // 背景内边距（px）
    private var currentText = "0/0"
    private lateinit var bgRect: RectF

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        // 测量文字宽度和高度
        val textWidth = textPaint.measureText(currentText)
        val fm = textPaint.fontMetrics
        val textHeight = fm.descent - fm.ascent

        // 计算背景尺寸（文字+内边距）
        val bgWidth = textWidth + bgPadding * 2
        val bgHeight = textHeight + bgPadding

        // 设置控件宽高
        setMeasuredDimension(bgWidth.toInt(), bgHeight.toInt())
    }
    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
        super.onSizeChanged(w, h, oldw, oldh)
        bgRect = RectF(0f, 0f, w.toFloat(), h.toFloat())
    }

    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        config?.let {
            // 更新文本（当前页/总页数）
            currentText = "${it.currentPosition + 1}/${it.indicatorSize}"

            // 绘制圆角背景
            canvas.drawRoundRect(bgRect, cornerRadius, cornerRadius, bgPaint)

            // 计算文字绘制位置（居中）
            val x = width / 2f
            val y = height / 2f - (textPaint.descent() + textPaint.ascent()) / 2f

            // 绘制文本
            canvas.drawText(currentText, x, y, textPaint)
        }
    }


    /** 设置文字颜色 */
    fun setTextColor(color: Int) {
        textPaint.color = color
        invalidate()
    }

    /** 设置文字大小（px） */
    fun setTextSize(size: Float) {
        textPaint.textSize = size
        requestLayout()
    }

    /** 设置文字大小（dp） */
    fun setTextSizeDp(dp: Float) {
        setTextSize(dp * resources.displayMetrics.density)
    }

    /** 设置背景颜色 */
    override fun setBackgroundColor(color: Int) {
        bgPaint.color = color
        invalidate()
    }

    /** 设置圆角半径（px） */
    fun setCornerRadius(radius: Float) {
        cornerRadius = radius
        invalidate()
    }

    /** 设置背景内边距（px） */
    fun setBackgroundPadding(padding: Float) {
        bgPadding = padding
        requestLayout()
    }
}